home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / QuickDraw 3D / Windows files / Q3WinSDK.exe / QD3DSDK / Samples / ViewerSample / TestRoutines.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-14  |  11.2 KB  |  389 lines

  1. #include "TestRoutines.h"
  2. #include "3DShell.h"
  3. #include "resource.h"
  4.  
  5. BOOL gSetWindowRegistered = FALSE;
  6. BOOL gGetBitmapWindowRegistered = FALSE;
  7.  
  8. LRESULT CALLBACK SetWindowProc(HWND hWnd, UINT message, WPARAM uParam, LPARAM lParam)   
  9. {
  10.     int wmId, wmEvent;
  11.  
  12.     switch (message) 
  13.     {
  14.         case WM_COMMAND:
  15.  
  16.             wmId    = LOWORD(uParam);
  17.             wmEvent = HIWORD(uParam);
  18.  
  19.             switch (wmId) 
  20.             {
  21.                 default:
  22.                     return (DefWindowProc(hWnd, message, uParam, lParam));
  23.             }
  24.             break;
  25.  
  26.         case WM_DESTROY:
  27.             Q3WinViewerSetWindow (gViewer, gHwnd);
  28.             return 0;
  29.             break;
  30.  
  31.         default:          // Passes it on if unproccessed
  32.             return (DefWindowProc(hWnd, message, uParam, lParam));
  33.     }
  34.     return (0);
  35. }
  36.  
  37. void DoSetWindowTest ()
  38. {
  39.     HWND        window;
  40.     WNDCLASS    wc;
  41.     ATOM        atom;
  42.     
  43.     if (gSetWindowRegistered == FALSE)
  44.     {
  45.         wc.style         = CS_HREDRAW | CS_VREDRAW;
  46.         wc.lpfnWndProc   = (WNDPROC)SetWindowProc;       
  47.         wc.cbClsExtra    = 0;                      
  48.         wc.cbWndExtra    = 0;                     
  49.         wc.hInstance     = hInst;             
  50.         wc.hIcon         = LoadIcon (hInst, MAKEINTRESOURCE(IDI_APP)); 
  51.         wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  52.         wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  53.         wc.lpszMenuName  = NULL; 
  54.         wc.lpszClassName = "SetWindowTestWindowClass";              
  55.             
  56.         atom = RegisterClass(&wc);
  57.  
  58.         if (atom == 0)
  59.         {
  60.             MessageBox (gHwnd, "SetWindowTest: RegisterClass failed", "SetWindowTest error", MB_OK);
  61.             return;
  62.         }
  63.  
  64.         gSetWindowRegistered = TRUE;
  65.     }
  66.  
  67.     window =  CreateWindowEx(WS_EX_WINDOWEDGE|WS_EX_CLIENTEDGE,    // extended window style
  68.                     "SetWindowTestWindowClass",    // pointer to registered class name
  69.                     "Set Window Test",    // pointer to window name
  70.                     WS_OVERLAPPED | WS_CAPTION |WS_THICKFRAME | WS_SYSMENU,    // window style
  71.                     450, 25, 400, 450,      // fixed size windows
  72.                     NULL,    // handle to parent or owner window
  73.                     NULL,    // handle to menu, or child-window identifier
  74.                     hInst,    // handle to application instance
  75.                     NULL     // pointer to window-creation data
  76.         );
  77.  
  78.     if (window == NULL)
  79.     {
  80.         MessageBox (gHwnd, "SetWindowTest: CreateWindowEx failed", "SetWindowTest error", MB_OK);
  81.         return;
  82.     }
  83.  
  84.     ShowWindow (window, SW_SHOW);
  85.     UpdateWindow (window);
  86.     if (Q3WinViewerSetWindow (gViewer, window) == kQ3Failure)
  87.     {
  88.         MessageBox (gHwnd, "SetWindowTest: Q3WinViewerSetWindow Failed", "SetWindowTest error", MB_OK);
  89.         DestroyWindow (window);
  90.         return;
  91.     }
  92. }
  93.  
  94. void DoTestMinDimension ()
  95. {
  96.     unsigned long width, height;
  97.     char string[255];
  98.  
  99.     if (Q3WinViewerGetMinimumDimension (gViewer, &width, &height) == kQ3Failure)
  100.     {
  101.         MessageBox (gHwnd, "TestMinDimension: Q3WinViewerGetMinimum failed", "TestMinDimension error", MB_OK);
  102.         return;
  103.     }
  104.     sprintf (string, "Minimum Dimension - Height: %d Width: %d", height, width); 
  105.     MessageBox (gHwnd, string, "Q3WinViewerGetMinimumDimension test", MB_OK);
  106. }
  107.  
  108. void DoTestGetButtonRect ()
  109. {
  110.     char string[500];
  111.     RECT rect;
  112.     int index = 0;
  113.     int count;
  114.  
  115.     if (Q3WinViewerGetButtonRect (gViewer, kQ3ViewerButtonCamera, &rect) == kQ3Success)
  116.         count = sprintf (&(string[index]), "Camera Button - top: %d left: %d bottom: %d right: %d\n", rect.top, rect.left, rect.bottom, rect.right);
  117.     else
  118.         count = sprintf (&(string[index]), "Camera Button - failed\n");
  119.  
  120.     index += count;
  121.  
  122.     if (Q3WinViewerGetButtonRect (gViewer, kQ3ViewerButtonTruck, &rect) == kQ3Success)
  123.         count = sprintf (&(string[index]), "Truck Button - top: %d left: %d bottom: %d right: %d\n", rect.top, rect.left, rect.bottom, rect.right);
  124.     else
  125.         count = sprintf (&(string[index]), "Truck Button - failed\n");
  126.  
  127.     index += count;    
  128.  
  129.     if (Q3WinViewerGetButtonRect (gViewer, kQ3ViewerButtonOrbit, &rect) == kQ3Success)
  130.         count = sprintf (&(string[index]), "Rotate Button - top: %d left: %d bottom: %d right: %d\n", rect.top, rect.left, rect.bottom, rect.right);
  131.     else
  132.         count = sprintf (&(string[index]), "Rotate Button - failed\n");
  133.  
  134.     index += count;    
  135.  
  136.     if (Q3WinViewerGetButtonRect (gViewer, kQ3ViewerButtonZoom, &rect) == kQ3Success)
  137.         count = sprintf (&(string[index]), "Zoom Button - top: %d left: %d bottom: %d right: %d\n", rect.top, rect.left, rect.bottom, rect.right);
  138.     else
  139.         count = sprintf (&(string[index]), "Zoom Button - failed\n");
  140.  
  141.     index += count;    
  142.  
  143.     if (Q3WinViewerGetButtonRect (gViewer, kQ3ViewerButtonDolly, &rect) == kQ3Success)
  144.         count = sprintf (&(string[index]), "Dolly Button - top: %d left: %d bottom: %d right: %d\n", rect.top, rect.left, rect.bottom, rect.right);
  145.     else
  146.         count = sprintf (&(string[index]), "Dolly Button - failed\n");
  147.  
  148.     index += count;    
  149.  
  150.     if (Q3WinViewerGetButtonRect (gViewer, kQ3ViewerButtonReset, &rect) == kQ3Success)
  151.         count = sprintf (&(string[index]), "Reset Button - top: %d left: %d bottom: %d right: %d\n", rect.top, rect.left, rect.bottom, rect.right);
  152.     else
  153.         count = sprintf (&(string[index]), "Reset Button - failed\n");
  154.  
  155.     index += count;    
  156.  
  157.     MessageBox (gHwnd, string, "Q3WinViewerGetButtonRect test", MB_OK);
  158. }
  159.  
  160.  
  161. void DoTestSetCurrentButton (int id)
  162. {
  163.     switch (id)
  164.     {
  165.         case IDM_TESTSETCAMERABUTTON: 
  166.             if (Q3WinViewerSetCurrentButton (gViewer, kQ3ViewerButtonCamera) == kQ3Failure)
  167.                 MessageBox (gHwnd, "SetCurrentButtonTest: Q3WinViewerSetCurrentButton (kQ3ViewerButtonCamera) failed", "SetCurrentButtonTest error", MB_OK);
  168.             break;
  169.         case IDM_TESTSETTRUCKBUTTON:
  170.             if (Q3WinViewerSetCurrentButton (gViewer, kQ3ViewerButtonTruck) == kQ3Failure)
  171.                 MessageBox (gHwnd, "SetCurrentButtonTest: Q3WinViewerSetCurrentButton (kQ3ViewerButtonTruck) failed", "SetCurrentButtonTest error", MB_OK);
  172.             break;
  173.         case IDM_TESTSETROTATEBUTTON:
  174.             if (Q3WinViewerSetCurrentButton (gViewer, kQ3ViewerButtonOrbit) == kQ3Failure)
  175.                 MessageBox (gHwnd, "SetCurrentButtonTest: Q3WinViewerSetCurrentButton (kQ3ViewerButtonOrbit) failed", "SetCurrentButtonTest error", MB_OK);
  176.             break;
  177.         case IDM_TESTSETZOOMBUTTON:
  178.             if (Q3WinViewerSetCurrentButton (gViewer, kQ3ViewerButtonZoom) == kQ3Failure)
  179.                 MessageBox (gHwnd, "SetCurrentButtonTest: Q3WinViewerSetCurrentButton (kQ3ViewerButtonZoom) failed", "SetCurrentButtonTest error", MB_OK);
  180.             break;
  181.         case IDM_TESTSETDOLLYBUTTON:
  182.             if (Q3WinViewerSetCurrentButton (gViewer, kQ3ViewerButtonDolly) == kQ3Failure)
  183.                 MessageBox (gHwnd, "SetCurrentButtonTest: Q3WinViewerSetCurrentButton (kQ3ViewerButtonDolly) failed", "SetCurrentButtonTest error", MB_OK);
  184.             break;
  185.     }
  186. }
  187.  
  188. LRESULT CALLBACK GetBitmapProc(HWND hWnd, UINT message, WPARAM uParam, LPARAM lParam)   
  189. {
  190.     int wmId, wmEvent;
  191.  
  192.     switch (message) 
  193.     {
  194.         case WM_COMMAND:
  195.  
  196.             wmId    = LOWORD(uParam);
  197.             wmEvent = HIWORD(uParam);
  198.  
  199.             switch (wmId) 
  200.             {
  201.                 default:
  202.                     return (DefWindowProc(hWnd, message, uParam, lParam));
  203.             }
  204.             break;
  205.  
  206.         case WM_DESTROY:
  207.         {
  208.             HBITMAP bitmap = (HBITMAP) GetWindowLong (hWnd, GWL_USERDATA);
  209.  
  210.             if (bitmap != NULL)
  211.                 DeleteObject (bitmap);
  212.  
  213.             return 0;
  214.         }
  215.             break;
  216.  
  217.         case WM_PAINT:
  218.         {
  219.             HBITMAP bitmap = (HBITMAP) GetWindowLong (hWnd, GWL_USERDATA);
  220.  
  221.             if (bitmap != NULL)
  222.             {
  223.                 HDC fromDC, toDC;
  224.                 PAINTSTRUCT paintStruct;
  225.  
  226.                 toDC = GetDC (hWnd);
  227.                 
  228.                 if (toDC == NULL)
  229.                 {
  230.                     MessageBox (gHwnd, "GetButtonTest: GetDC failed", "GetBitmapTest error", MB_OK);
  231.                     return 0;
  232.                 }
  233.  
  234.                 fromDC = CreateCompatibleDC (toDC);
  235.  
  236.                 if (fromDC == NULL)
  237.                 {
  238.                     MessageBox (gHwnd, "GetButtonTest: CreateCompatibleDC failed", "GetBitmapTest error", MB_OK);
  239.                     return 0;
  240.                 }
  241.  
  242.                 SelectObject (fromDC, bitmap);
  243.  
  244.                 if (BeginPaint (hWnd, &paintStruct) != NULL)
  245.                 {
  246.                     BITMAP map;
  247.                     int        bytes;
  248.  
  249.                     bytes = GetObject (bitmap, sizeof (BITMAP), &map);
  250.  
  251.                     if (bytes == 0)    
  252.                         MessageBox (gHwnd, "GetButtonTest: GetObject failed", "GetBitmapTest error", MB_OK);
  253.                     else
  254.                         BitBlt (toDC, 0, 0, map.bmWidth, map.bmHeight, fromDC, 0, 0, SRCCOPY);
  255.                     EndPaint (hWnd, &paintStruct);
  256.                 }
  257.  
  258.                 DeleteDC (fromDC);
  259.  
  260.  
  261.             }
  262.             else
  263.                 MessageBox (gHwnd, "GetButtonTest: GetWindowLong failed", "GetBitmapTest error", MB_OK);
  264.  
  265.             return 0;
  266.  
  267.         }
  268.             break;
  269.  
  270.         default:          // Passes it on if unproccessed
  271.             return (DefWindowProc(hWnd, message, uParam, lParam));
  272.     }
  273.     return (0);
  274. }
  275.  
  276. void DoTestGetBitmap ()
  277. {
  278.     HBITMAP        bitmap;
  279.     HWND        window;
  280.     WNDCLASS    wc;
  281.     ATOM        atom;
  282.     RECT        rect;
  283.  
  284.     if (gGetBitmapWindowRegistered == FALSE)
  285.     {
  286.         wc.style         = CS_HREDRAW | CS_VREDRAW;
  287.         wc.lpfnWndProc   = (WNDPROC)GetBitmapProc;       
  288.         wc.cbClsExtra    = 0;                      
  289.         wc.cbWndExtra    = 0;                     
  290.         wc.hInstance     = hInst;             
  291.         wc.hIcon         = LoadIcon (hInst, MAKEINTRESOURCE(IDI_APP)); 
  292.         wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  293.         wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  294.         wc.lpszMenuName  = NULL; 
  295.         wc.lpszClassName = "GetBitmapTestWindowClass";              
  296.             
  297.         atom = RegisterClass(&wc);
  298.  
  299.         if (atom == 0)
  300.         {
  301.             MessageBox (gHwnd, "GetBitmapTest: RegisterClass failed", "GetBitmapTest error", MB_OK);
  302.             return;
  303.         }
  304.  
  305.         gGetBitmapWindowRegistered = TRUE;
  306.     }
  307.  
  308.  
  309.     bitmap = Q3WinViewerGetBitmap (gViewer);
  310.  
  311.     if (bitmap == NULL)
  312.     {
  313.         MessageBox (gHwnd, "GetButtonTest: Q3WinViewerGetBitmap failed", "GetBitmapTest error", MB_OK);
  314.         return;
  315.     }
  316.  
  317.     if (GetWindowRect (gHwnd, &rect) == FALSE)
  318.     {
  319.         MessageBox (gHwnd, "GetButtonTest: GetWindowRect failed", "GetBitmapTest error", MB_OK);
  320.         DeleteObject (bitmap);
  321.         return;
  322.     }
  323.  
  324.     window =  CreateWindowEx(WS_EX_WINDOWEDGE|WS_EX_CLIENTEDGE,    // extended window style
  325.                 "GetBitmapTestWindowClass",    // pointer to registered class name
  326.                 "Q3WinViewerGetBitmap Test",    // pointer to window name
  327.                 WS_OVERLAPPED | WS_CAPTION |WS_THICKFRAME | WS_SYSMENU,    // window style
  328.                 450, 25, rect.right-rect.left, rect.bottom-rect.top,      // fixed size windows
  329.                 NULL,    // handle to parent or owner window
  330.                 NULL,    // handle to menu, or child-window identifier
  331.                 hInst,    // handle to application instance
  332.                 NULL     // pointer to window-creation data
  333.     );
  334.  
  335.     if (window == NULL)
  336.     {
  337.         MessageBox (gHwnd, "GetButtonTest: CreateWindowEx failed", "GetBitmapTest error", MB_OK);
  338.         DeleteObject (bitmap);
  339.         return;
  340.     }
  341.  
  342.     (void) SetWindowLong (window, GWL_USERDATA, (long) bitmap);
  343.  
  344.     ShowWindow (window, SW_SHOW);
  345.     UpdateWindow (window);
  346.  
  347. }
  348.  
  349. void DoTestWriteData ()
  350. {
  351.     long size, actualSize;
  352.     void *data;
  353.  
  354.     if (Q3WinViewerWriteData (gViewer, NULL, 0, &actualSize) == kQ3Failure)
  355.     {
  356.         MessageBox (gHwnd, "WriteDataTest: 1st Q3WinViewerWriteData failed", "WriteDataTest error", MB_OK);
  357.         return;
  358.     }
  359.  
  360.     data = malloc (actualSize);
  361.  
  362.     if (data == NULL)
  363.     {
  364.         MessageBox (gHwnd, "WriteDataTest: malloc failed", "WriteDataTest error", MB_OK);
  365.         return;
  366.     }
  367.  
  368.     size = actualSize;
  369.  
  370.     if (Q3WinViewerWriteData (gViewer, data, size, &actualSize) == kQ3Failure)
  371.     {
  372.         MessageBox (gHwnd, "WriteDataTest: 2nd Q3WinViewerWriteData failed", "WriteDataTest error", MB_OK);
  373.         free (data);
  374.         return;
  375.     }
  376.  
  377.     if (size != actualSize)
  378.     {
  379.         char string[255];
  380.  
  381.         sprintf (string, "WriteDataTest: Sizes are different.  Size: %d ActualSize: %d", size, actualSize);
  382.         MessageBox (gHwnd, string, "WriteDataTest error", MB_OK);
  383.     }
  384.  
  385.     free (data);
  386.  
  387. }
  388.  
  389.